package com.jiantong.work.service;

import com.jiantong.work.model.ButcherReportsForm;
import io.terminus.common.model.Paging;
import io.terminus.common.model.Response;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * Created by niufei on 2017/4/17.
 * 屠宰检疫的报表
 */
public interface ButcherReportsFormReadService {

    /**
     * 根据id查询屠宰检疫报表的详情
     * @param id 主键id
     * @return Response<ButcherReportsForm>
     */
    Response<ButcherReportsForm> findButcherReportsFormById(Long id);

    /**
     * 根据动物种类分类 查询合计
     * @param start 从日期
     * @param end 到日期
     * @param butcherFactoryIds 申报点id
     * @return List<Object>
     */
    Response<List<Map<String , Object>>> findSumGroupByProductType(Date start , Date end , List<Long> butcherFactoryIds);

    /**
     * 分页查询
     * @param pageNo 页码
     * @param pageSize 每页多少条
     * @param start 从日起
     * @param end 到日期
     * @param butcherFactoryIds 屠宰场id
     * @param productType 产品种类
     * @return Paging<ButcherReportsForm>
     */
    Response<Paging<ButcherReportsForm>> pingButcherReportForm(Integer pageNo , Integer pageSize ,Date start , Date end ,  List<Long> butcherFactoryIds,Integer productType);


    /**
     * 根据动物种类分类 查询合计(harmless)
     * @param start 从日期
     * @param end 到日期
     * @param butcherFactoryIds 申报点id
     * @return List<Object>
     */
    Response<List<Map<String , Object>>> findHarmlessSumGroupByProductType(Date start , Date end , List<Long> butcherFactoryIds);

    /**
     * 分页查询 (harmless)
     * @param pageNo 页码
     * @param pageSize 每页多少条
     * @param start 从日起
     * @param end 到日期
     * @param butcherFactoryIds 屠宰场id
     * @param productType 产品种类
     * @return Paging<ButcherReportsForm>
     */
    Response<Paging<ButcherReportsForm>> pagingButcherHarmlessForm(Integer pageNo , Integer pageSize ,Date start , Date end ,  List<Long> butcherFactoryIds,Integer productType);

    Response<Paging<ButcherReportsForm>> pagingCommon(Integer pageNo , Integer pageSize ,Map criteria);

    /**
     * 屠宰检疫总体情况
     * @return
     */
    Response<List<Map>> tzjy(Map criteria);

    /**
     * 本地入场数
     * @return
     */
    Response<Integer> local(Map criteria);

    /**
     * 屠宰来源分布
     * @param criteria
     * @return
     */
    Response<List<Map>> localbutcher(Map criteria);

    Response<ButcherReportsForm> findByReportId(Long reportId);

    Response<Paging<ButcherReportsForm>> pagingButcherReportsFormForWeb(Integer page, Integer rows, Map<String, Object> criteria);

    Response<List<ButcherReportsForm>> findListForWeb(Map<String, Object> map);
}
